package com.tecode.java.method;

import java.util.Scanner;

/**
 * 
 * 
 * 方法的定义语法：
 * 
 * 			权限修饰符      [修饰符]      void|返回值类型    方法名([形参列表]){
 * 					方法体;
 * 
 * 					
 * 					return  返回的具体的值;  -- 在有返回值类型是才有该语句。
 * 			}
 * 
 * 
 * 方法调用时，会执行完调用的方法之后再继续执行当前的方法中的程序。
 * 
 * @author Administrator
 *
 */
public class TestMethod {
	
	public static void main(String[] args) {
/*		System.out.println("1.main方法的开始。");
		testPrint(); // 方法的调用
		Scanner sc = new Scanner(System.in);
		
		double a = sc.nextDouble();

		int c = (int)a;
		testPrint1(c);
		
		System.out.println("随机数：");
		int a1 = getRandom();
		System.out.println("求和");
		testSum(1, 3);
		
		
		System.out.println("2.main方法的结束。");*/
		
		System.out.println(testFactorial(5));
	}
	
	
	/**
	 * 定义一个无参数无返回值的方法
	 * 1.在方法中输出一句话
	 */
	
	public  static void testPrint(){	
		
		return ;  // 程序执行完该语句后，表示结束当前testPrint()方法的调用。  在return 语句后面的代码不会被执行到。
		//System.out.println("3.无参数无返回值的方法体。。。");	
	}
	
	/**
	 * 
	 * 定义一个有参数无返回值的方法
	 * 1.定义一个方法来打印传入的参数的值。
	 * 2.传入的参数的数据类型必须和形参列表接收的数据类型兼容。  形参列表的参数类型的范围必须大于等于传入参数的类型范围
	 * 3.如果形参列表上有多个参数，则参数与参数之间使用，分隔，但是每个参数必须指定数据类型。
	 */
	
	
	public static void testPrint1(int str){
		
		System.out.println("str:" + str);
	}
	
	/***
	 * 定义一个无参数有返回值的方法
	 * 1. 定义一个函数来随机生成一个整数字
	 * 2.有返回值的方法，那么返回值必须使用return关键字来返回具体的值。
	 * 3。返回的具体的值的类型的范围，必须小于等于定义方法时的返回值类型。
	 * 4.return关键字 还有来结束方法的调用。     语法：return;  -- 只能使用在无返回值的方法中
	 */
	
	
	public static   int getRandom(){
		int a = 10;
		if(a<20){		
			return (int)(Math.random() * 50);	
		}
		
		return 0;
	}
	
	
	/**
	 * 有参数有返回值
	 * 
	 * 1.求两个整数的和
	 */	
	public  static int testSum(int a ,int b ){
		
		return a +b;
	}
	
	
	
	/**
	 * 定义一个方法来求传入数字的阶乘
	 * 
	 * 5! = 1 * 2 * 3 * 4 * 5
	 * 
	 * 5! = 5 * 4!
	 * 4! = 4 * 3!
	 * 3! = 3 * 2!
	 * 2! = 2 * 1!
	 * 1! = 1;
	 * 
	 * 递归调用。
	 */
	
	public static int testFactorial(int i){
		
		if(i==1){
			return 1;
		}else{
			return i * testFactorial(i-1);
		}
	}


	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
}
